package storage

import (
	"log/slog"

	"gorm.io/driver/mysql"
	"gorm.io/gorm"

	"torler.com/qingyue/pkg/logger"
)

type DBConfig struct {
	Dsn          string `mapstructure:"dsn"`            // 数据库连接字符串
	LogFileName  string `mapstructure:"log_file_name"`  // 日志文件名
	LogLevel     string `mapstructure:"log_level"`      // 日志级别
	MaxIdleConns int    `mapstructure:"max_idle_conns"` // 最大空闲连接
	MaxOpenConns int    `mapstructure:"max_open_conns"` // 最大打开连接
}

type Database struct {
	Config *DBConfig
	DB     *gorm.DB
	Logger slog.Logger
}

func NewDatabase(cfg *DBConfig) *Database {

	return &Database{
		Config: cfg,
	}
}
func (database *Database) Connect() {

	db, err := gorm.Open(mysql.Open(database.Config.Dsn), &gorm.Config{})
	if err != nil {
		panic(err)
	}
	sqlDB, err := db.DB()
	if err != nil {
		panic(err)
	}
	sqlDB.SetMaxIdleConns(database.Config.MaxIdleConns)
	sqlDB.SetMaxOpenConns(database.Config.MaxOpenConns)
	database.DB = db
	logger.Default().Info("数据库连接成功")
}
func (database *Database) Close() error {
	// 关闭数据库连接的逻辑
	return nil
}
func (database *Database) Migrate() error {

	// 数据库迁移的逻辑
	// 这里可以使用 db.Config 中的配置进行迁移
	return nil
}
